// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "custom/splitalpha2/gray/ui"
{
Properties
{
    [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
    _Color ("Tint", Color) = (1,1,1,1)
    [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
	_Stencil ("Stencil Ref", Float) = 0
	[Toggle] _Horizontal("Horizontal", Float) = 0
	_RGBT_Factor ("RGBT Factor", Float) = (0,0,0,0)
}

SubShader
{
    Tags
    { 
        "Queue"="Transparent" 
        "IgnoreProjector"="True" 
        "RenderType"="Transparent" 
        "PreviewType"="Plane"
        "CanUseSpriteAtlas"="True"
    }
	Stencil {
        Ref  [_Stencil]
        Comp Equal
        Pass replace
		
        ZFail decrWrap
    }
    Cull Off
    Lighting Off
    ZWrite Off
    Fog { Mode Off }
    Blend One OneMinusSrcAlpha

    Pass
    {
    CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag
        #pragma multi_compile DUMMY PIXELSNAP_ON
        #include "UnityCG.cginc"

        struct appdata_t
        {
            float4 vertex   : POSITION;
            float4 color    : COLOR;
            float2 texcoord : TEXCOORD0;
        };

        struct v2f
        {
            float4 vertex   : SV_POSITION;
            fixed4 color    : COLOR;
            half2 texcoord  : TEXCOORD0;
        };

        fixed4 _Color;
        bool _Horizontal;
		fixed4 _RGBT_Factor;
		
        v2f vert(appdata_t IN)
        {
            v2f OUT;
            OUT.vertex = UnityObjectToClipPos(IN.vertex);
            OUT.texcoord = IN.texcoord;
            OUT.color = IN.color * _Color;
            #ifdef PIXELSNAP_ON
            OUT.vertex = UnityPixelSnap (OUT.vertex);
            #endif

            return OUT;
        }

        sampler2D _MainTex;
		
        fixed4 frag(v2f IN) : SV_Target
        {
            fixed4 c = tex2D(_MainTex, IN.texcoord);
            half2 alphaTexCoord = IN.texcoord;
			if(_Horizontal)
			{
				alphaTexCoord.x += 0.5f;
			}
			else
			{
				alphaTexCoord.y += 0.5f;
			}
			fixed4 alpha = tex2D(_MainTex, alphaTexCoord);
            c.a = alpha.r;
            c = c * IN.color;
            c.rgb *= c.a;
            
            fixed gray = _RGBT_Factor.x * c.r + _RGBT_Factor.y * c.g + _RGBT_Factor.z * c.b;
            c.rgb = gray * _RGBT_Factor.w;
            return c;
        }
    ENDCG
    }
}
}